La Programación con Restricciones (Constraint Programming) \cite{HCP} es un paradigma de programación muy potente para la resolución de problemas de búsqueda y optimización
combinatoria. Basado en técnicas de Inteligencia Artificial, Ciencias de la Computación e Investigación operativa, su principal característica radica 
en su naturaleza declarativa, siendo el usuario quien ``declara'' que restricciones debe cumplir un conjunto de variables de un problema concreto
para que se considere una solución válida del mismo.